<?php

/*
  load: css, js 静态文件
  启用 gz压缩、缓存处理、过期处理、文件合并等优化操作
 */
error_reporting( 0 );

if( extension_loaded( 'zlib' ) )
{
    //检查服务器是否开启了zlib拓展
    ob_start( 'ob_gzhandler' );
}

$allowed_content_types = array( 'js', 'css' );
$getfiles = explode( ',', strip_tags( $_GET[ 'f' ] ) );
//$offset = 604800; //过期7天
$offset = 1; //过期1s

//后缀自动识别
$content_type = 'application/x-javascript'; //默认加载js
if( !empty( $getfiles ) )
{
    $ext = pathinfo( $getfiles[ 0 ], PATHINFO_EXTENSION );
    if( $ext == 'css' )
    {
        $content_type = 'text/css';
    }
}

header( "content-type: " . $content_type . "; charset: utf-8" );  //注意修改到你的编码
// header ( "cache-control: must-revalidate" );
header( "cache-control: max-age=" . $offset );
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s", time() ) . "GMT" );
header( "Pragma: max-age=" . $offset );
header( "Expires:" . gmdate( "D, d M Y H:i:s", time() + $offset ) . " GMT" );
set_cache_limit( $offset );

ob_start( "compress" );

function compress( $buffer )
{//去除文件中的注释
    $buffer = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer );
    return $buffer;
}

function set_cache_limit( $second = 1 )
{
    $second = intval( $second );
    if( $second == 0 )
    {
        return;
    }
    $etag = time() . "||" . base64_encode( $_SERVER[ 'REQUEST_URI' ] );

    if( !isset( $_SERVER[ 'HTTP_IF_NONE_MATCH' ] ) )
    {
        header( "Etag:$etag", true, 200 );
        return;
    }
    else
    {
        $id = $_SERVER[ 'HTTP_IF_NONE_MATCH' ];
    }

    list( $time, $uri ) = explode( "||", $id );

    if( $time < (time() - $second) )
    {//过期了，发送新tag
        header( "Etag:$etag", true, 200 );
    }
    else
    {//未过期，发送旧tag
        header( "Etag:$id", true, 304 );
        exit( -1 );
    }
}

foreach( $getfiles as $file )
{
    $fileType = strtolower( pathinfo( $file, PATHINFO_EXTENSION ) );
    if( in_array( $fileType, $allowed_content_types ) )
    {
        //包含你的全部css文档
        readfile( trim( $file ) );
    }
    else
    {
        echo 'not allowed file type:' . $file;
    }
}
//输出buffer中的内容，即压缩后的css文件
if( extension_loaded( 'zlib' ) )
{
    ob_end_flush();
}